home *** CD-ROM | disk | FTP | other *** search
- /*
- * Copyright (c) 1994 Silicon Graphics, Inc.
- *
- * Permission to use, copy, modify, distribute, and sell this software and
- * its documentation for any purpose is hereby granted without fee,
- * provided that (i) the above copyright notices and this permission
- * notice appear in all copies of the software and related documentation,
- * and (ii) the name of Silicon Graphics may not be used in any
- * advertising or publicity relating to the software without the specific,
- * prior written permission of Silicon Graphics.
- *
- * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,
- * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY
- * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
- *
- * IN NO EVENT SHALL SILICON GRAPHICS BE LIABLE FOR ANY SPECIAL,
- * INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, OR ANY
- * DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER
- * OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF
- * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
- * OF THIS SOFTWARE.
- */
- /*
- * Misc utility routines.
- */
- #include <stdlib.h>
- #include <stdio.h>
- #include <string.h>
- #include <unistd.h>
- #include <math.h>
- #include <GL/gl.h>
- #include "util.h"
-
- float x_axis[] = { 1.0, 0.0, 0.0 };
- float y_axis[] = { 0.0, 1.0, 0.0 };
- float z_axis[] = { 0.0, 0.0, 1.0 };
- float nx_axis[] = { -1.0, 0.0, 0.0 };
- float ny_axis[] = { 0.0, -1.0, 0.0 };
- float nz_axis[] = { 0.0, 0.0, -1.0 };
-
- void norm(float v[3])
- {
- float r;
-
- r = sqrt( v[0]*v[0] + v[1]*v[1] + v[2]*v[2] );
-
- v[0] /= r;
- v[1] /= r;
- v[2] /= r;
- }
-
- float dot(float a[3], float b[3])
- {
- return (a[0]*b[0] + a[1]*b[1] + a[2]*b[2]);
- }
-
- void cross(float v1[3], float v2[3], float result[3])
- {
- result[0] = v1[1]*v2[2] - v1[2]*v2[1];
- result[1] = v1[2]*v2[0] - v1[0]*v2[2];
- result[2] = v1[0]*v2[1] - v1[1]*v2[0];
- }
-
- float length(float v[3])
- {
- float r = sqrt( v[0]*v[0] + v[1]*v[1] + v[2]*v[2] );
- return r;
- }
-
- /*
- * Returns: extension named 'name' is supported.
- */
- GLboolean
- getExtension(char *name)
- {
- const GLubyte *extensions;
-
- extensions = glGetString(GL_EXTENSIONS);
- if (extensions == NULL || *extensions == '\0')
- return GL_FALSE;
- return strstr(extensions, name) != 0;
- }
-